Mobile devices (e.g., smart phones) are now being pushed to perform extensive computations and communicate large amounts of data. While the processors and wireless modems used in modern mobile devices have impressive capacities, modern applications, and uses often push the limits of processing capacity and communication bandwidth. Often the applications or processes that are the heavy users of processing and/or communication bandwidth are operating in the background (e.g., updates to applications, downloads of ads or background information, etc.). As a result of unseen or unknown processes/applications demanding processing capacity or bandwidth, users may become frustrated with the sluggish performance of their devices. Non-technical users are interested in what their devices do and what is presented on the screen, not in the background processes and device resources that make such functionality possible.
Different parts of an application contribute differently to the perceived user experience. For example, when a user visits a web page, she might be interested only in a small part of the page, but the ads in the page may consume most of the processing power, communication bandwidth, and battery energy required to present the page on the screen. As another example, while a user is watching a video, a background process (e.g., a weather application data download) might start accessing the network and consume a portion of the communication bandwidth that the user would prefer to be used for watching the video. From the user's perspective, the resources used by these tasks are wasted. Current tools for monitoring resource usages are beyond the understanding of non-technical users. Even technical users find it difficult to tune the system manually by checking the process list, enabling and disabling background services, studying their resource usage, and relating them back to actual behavior of applications of interest. Since there is no such mechanism for normal users, mobile devices typically do not provide fine grained mechanisms for customizing resource usage.